package com.pipa.empleado.dao;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.pipa.catalogo.entity.Departamento;
import com.pipa.catalogo.entity.Distrito;
import com.pipa.catalogo.entity.Provincia;
import com.pipa.catalogo.entity.TipoEmpleado;
import com.pipa.empleado.entity.Empleado;
import com.pipa.util.MySQLConexion;

public class EmpleadoDAO {

	public List<Empleado> getEmpleados() throws SQLException{
		PreparedStatement pstm = MySQLConexion.getConexion().prepareStatement(""
				+ "select agecve,agenom,agedir,agete1, "
				+ "distrito.tbespe agedisc,distrito.desesp agedisd,"
				+ "provincia.tbespe ageproc,provincia.desesp ageprod,"
				+ "departamento.tbespe agedptc,departamento.desesp agedptd,"
				+ "tipo.tbespe agetipc,tipo.desesp agetipd "
				+ "from tagen "
				+ "left join ttabd distrito on distrito.tbiden='UBGCOD' and distrito.tbespe=agedis "
				+ "left join ttabd provincia on provincia.tbiden='UBGCOD' and provincia.tbespe=agepro "
				+ "left join ttabd departamento on departamento.tbiden='UBGCOD' and departamento.tbespe=agedpt "
				+ "left join ttabd tipo on tipo.tbiden='AGETIP' and tipo.tbespe=agetip ");
		ResultSet rs = pstm.executeQuery();
		List<Empleado> listado = new ArrayList<Empleado>();
		while(rs.next()){
			Empleado emp = new Empleado();
			emp.setAgecve(rs.getInt("agecve"));
			emp.setAgenom(rs.getString("agenom"));
			emp.setAgedir(rs.getString("agedir"));
			emp.setAgete1(rs.getString("agete1"));
			emp.setAgedis(new Distrito(rs.getString("agedisc"),rs.getString("agedisd")));
			emp.setAgepro(new Provincia(rs.getString("ageproc"),rs.getString("ageprod")));
			emp.setAgedpt(new Departamento(rs.getString("agedptc"), rs.getString("agedptd")));
			emp.setAgetip(new TipoEmpleado(rs.getString("agetipc"), rs.getString("agetipd")));
			listado.add(emp);
		}
		rs.close();
		pstm.close();
		return listado;
	}
	
	public int registrarEmpleado(Empleado empleado) throws SQLException {
		PreparedStatement pstm = MySQLConexion.getConexion().prepareStatement(""
				+ "insert into tagen(agenom,agedir,agete1,agetip,agedis,agepro,agedpt) "
				+ "values (?,?,?,?,?,?,?)");
		pstm.setString(1, empleado.getAgenom());
		pstm.setString(2, empleado.getAgedir());
		pstm.setString(3, empleado.getAgete1());
		pstm.setString(4, empleado.getAgetip().getCodigo());
		pstm.setString(5, empleado.getAgedis().getCodigo());
		pstm.setString(6, empleado.getAgepro().getCodigo());
		pstm.setString(7, empleado.getAgedpt().getCodigo());
		int r = pstm.executeUpdate();
		pstm.close();
		return r;
	}
	
	public int modificarEmpleado(Empleado empleado) throws SQLException {
		PreparedStatement pstm = MySQLConexion.getConexion().prepareStatement(""
				+ "update tagen set agenom=?,agedir=?,agete1=?,agetip=?,agedis=?,agepro=?,agedpt=? where agecve=? ");
		pstm.setString(1, empleado.getAgenom());
		pstm.setString(2, empleado.getAgedir());
		pstm.setString(3, empleado.getAgete1());
		pstm.setString(4, empleado.getAgetip().getCodigo());
		pstm.setString(5, empleado.getAgedis().getCodigo());
		pstm.setString(6, empleado.getAgepro().getCodigo());
		pstm.setString(7, empleado.getAgedpt().getCodigo());
		pstm.setInt(8, empleado.getAgecve());
		int r = pstm.executeUpdate();
		pstm.close();
		return r;
	}
	
	public int desactivarEmpleado(Empleado empleado) throws SQLException{
		return 0;
	}
}
